package model;
public class Pacman extends Movible {

	private EstadoPacman estado;

    public void setEstado(EstadoPacman estado) {
		this.estado = estado;
    }

    public Pacman(ElemEscenario posInicial) {
        setEstado(new Defensivo());
        setPosicion(posInicial);
        setTurnoIncioMovimiento(Constantes.TURNO_INICIAL);
    }

	public boolean morir() {
		return estado.morir(this);
    }

    @Override
    public int getVelocidad() {
        return estado.getVelocidad();
    }

    public boolean mover(ElemEscenario elemEscenario) {
        boolean mover = estado.mover(this);
        if (mover)
            setPosicion(elemEscenario);
        return mover;
    }

    @Override
    boolean volverAestadoAnterior() {
        return estado.reiniciarEstado(this);
    }

    public boolean comer(Item item) {
        return estado.comer(this, item);
    }

    public String mostrarEstado(){
        return estado.mostrarEstado(this);
    }

    public boolean volverAgresivo() {
        setChanged();
        notifyObservers();
        iniciarTemporizador(Escenario.tiempoPacmanAgresivo);
        return estado.volverAgresivo(this);
    }

    public boolean estaAgresivo(){
        return estado.mostrarEstado(this).equals(Constantes.PACMAN_AGRESIVO);
    }


}
